package ar.com.sectorwine.entities;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;

@Entity
public class Publicacion implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 40468241333315L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	private String titulo;
	private String imagen;
	private String breveDescripcion;
	@Lob
	private String cuerpo;
	private Date fechaPublicacion;
	private Users usuarioCreador;
	private Date fechaUltimaModificacion;
	private String url;
	@ElementCollection
	private List<String> tag;
	private String fuente;
	@ManyToOne
	private EstadoPublicacion estadoPublicacion;
	@OneToOne
	private Empresa empresa;
	@ManyToOne
	private TipoPublicacion tipoPublicacion;
	private Long idEmpresaFuente;
	@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
	private ContadorReblog contadorReblog;
	private Long idPublicacionFuente;

	public List<String> getTags() {
		return tag;
	}

	public void setTags(List<String> tag) {
		this.tag = tag;
	}

	public String getFuente() {
		return fuente;
	}

	public void setFuente(String fuente) {
		this.fuente = fuente;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getImagen() {
		return imagen;
	}

	public void setImagen(String imagen) {
		this.imagen = imagen;
	}

	public String getBreveDescripcion() {
		return breveDescripcion;
	}

	public void setBreveDescripcion(String breveDescripcion) {
		this.breveDescripcion = breveDescripcion;
	}

	public String getCuerpo() {
		return cuerpo;
	}

	public void setCuerpo(String cuerpo) {
		this.cuerpo = cuerpo;
	}

	public Date getFechaPublicacion() {
		return fechaPublicacion;
	}

	public void setFechaPublicacion(Date fechaPublicacion) {
		this.fechaPublicacion = fechaPublicacion;
	}

	public Users getUsuarioCreador() {
		return usuarioCreador;
	}

	public void setUsuarioCreador(Users usuarioCreador) {
		this.usuarioCreador = usuarioCreador;
	}

	public Date getFechaUltimaModificacion() {
		return fechaUltimaModificacion;
	}

	public void setFechaUltimaModificacion(Date fechaUltimaModificacion) {
		this.fechaUltimaModificacion = fechaUltimaModificacion;
	}

	public EstadoPublicacion getEstadoPublicacion() {
		return estadoPublicacion;
	}

	public void setEstadoPublicacion(EstadoPublicacion estadoPublicacion) {
		this.estadoPublicacion = estadoPublicacion;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public TipoPublicacion getTipoPublicacion() {
		return tipoPublicacion;
	}

	public void setTipoPublicacion(TipoPublicacion tipoPublicacion) {
		this.tipoPublicacion = tipoPublicacion;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public Long getIdEmpresaFuente() {
		return idEmpresaFuente;
	}

	public void setIdEmpresaFuente(Long idEmpresaFuente) {
		this.idEmpresaFuente = idEmpresaFuente;
	}

	public ContadorReblog getContadorReblog() {
		return contadorReblog;
	}

	public void setContadorReblog(ContadorReblog contadorReblog) {
		this.contadorReblog = contadorReblog;
	}

	public Long getIdPublicacionFuente() {
		return idPublicacionFuente;
	}

	public void setIdPublicacionFuente(Long idPublicacionFuente) {
		this.idPublicacionFuente = idPublicacionFuente;
	}

}
